package com.liliudong.rommath.biz.sys.service;


import com.liliudong.rommath.biz.sys.entity.SysUser;
import com.liliudong.rommath.biz.sys.param.SysAuthLoginParam;
import com.liliudong.rommath.biz.sys.param.SysUserAddParam;
import com.liliudong.rommath.biz.sys.param.SysUserPageParam;
import com.liliudong.rommath.biz.sys.result.SysAuthLoginResult;
import com.liliudong.rommath.biz.sys.result.SysUserPageResult;
import com.liliudong.rommath.common.consts.RommathConst;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryChain;
import com.mybatisflex.core.service.IService;

import static com.liliudong.rommath.biz.sys.entity.table.SysUserTableDef.SYS_USER;

/**
 * 系统用户 服务层。
 *
 * @author liudong.li
 * @since 1.0.0
 */
public interface SysUserService extends IService<SysUser> {

    default QueryChain<SysUser> queryChainIgnoreDataPermission() {
        return queryChain()
                .from(SYS_USER.as(RommathConst.IGNORE_TABLE_ALIAS));
    }

    /**
     * 登录
     *
     * @param sysAuthLoginParam sys身份验证登录参数
     * @return {@link SysAuthLoginResult }
     */
    SysAuthLoginResult login(SysAuthLoginParam sysAuthLoginParam);

    /**
     * 添加
     *
     * @param param 帕拉姆
     */
    void add(SysUserAddParam param);

    /**
     * 查询页面
     *
     * @param param 帕拉姆
     * @return {@link Page }<{@link SysUserPageResult }>
     */
    Page<SysUserPageResult> queryPage(SysUserPageParam param);
}